μΉ μ±μμ λ°©λν λͺ©λ‘ λ λλ§ μ μ±λ₯κ³Ό μ κ·Όμ±μ ν₯μμν€λ κ°μ μ€ν¬λ‘€ κΈ°λ²μ νμνμ¬, μ μΈκ³ μ¬μ©μμκ² μνν κ²½νμ 보μ₯νμΈμ.
κ°μ μ€ν¬λ‘€: κΈλ‘λ² μ ν리μΌμ΄μ μ μν λκ·λͺ¨ λͺ©λ‘ μ κ·Όμ± μ΅μ ν
μ€λλ λ°μ΄ν°κ° νλΆν νκ²½μμ μΉ μ ν리μΌμ΄μ μ μ’ μ’ λ°©λν μμ μ 보λ₯Ό λͺ©λ‘μΌλ‘ νμν΄μΌ ν©λλ€. μμ² κ°μ μ νμ 보μ¬μ£Όλ κΈλ‘λ² μ μμκ±°λ νλ«νΌ, μλ κ°μ κ±°λ λ΄μμ νμνλ κΈμ΅ μ ν리μΌμ΄μ , λλ λμμ΄ μ΄μ΄μ§λ κ²μλ¬Όμ΄ μλ μμ λ―Έλμ΄ νΌλλ₯Ό μκ°ν΄ 보μΈμ. μ΄ μ 체 λͺ©λ‘μ ν λ²μ λ λλ§νλ©΄ μ±λ₯μ μ¬κ°ν μν₯μ λ―Έμ³ λ‘λ© μκ°μ΄ λλ €μ§κ³ μ¬μ©μ κ²½νμ΄ μ νλ μ μμΌλ©°, νΉν ꡬν κΈ°κΈ°λ λμνμ΄ μ νλ μ¬μ©μμκ²λ λμ± κ·Έλ μ΅λλ€. λν, μ 체 λͺ©λ‘μ λ λλ§νλ κ²μ μλΉν μ κ·Όμ± λ¬Έμ λ₯Ό μΌκΈ°ν©λλ€. λ°λ‘ μ΄ μ§μ μμ κ°μ μ€ν¬λ‘€(virtual scrolling), μ¦ μλμ(windowing)μ΄ μν μ ν©λλ€. μ΄λ λκ·λͺ¨ λ°μ΄ν° μΈνΈμ λ λλ§μ μ΅μ ννμ¬ μ μΈκ³ μ¬μ©μ κΈ°λ°μ μ±λ₯κ³Ό μ κ·Όμ±μ λͺ¨λ ν₯μμν€λ μ€μν κΈ°μ μ λλ€.
κ°μ μ€ν¬λ‘€μ΄λ 무μμΈκ°?
κ°μ μ€ν¬λ‘€μ κΈ΄ λͺ©λ‘μ΄λ ν μ΄λΈμμ μ¬μ©μμκ² λ³΄μ΄λ λΆλΆλ§ νμνλ λ λλ§ κΈ°μ μ λλ€. λͺ¨λ νλͺ©μ ν λ²μ λ λλ§νλ λμ , νμ¬ μ¬μ©μμ λ·°ν¬νΈ(viewport)μ μλ νλͺ©κ³Ό λ·°ν¬νΈ μμλμ μμ λ²νΌ νλͺ©λ§ λ λλ§ν©λλ€. μ¬μ©μκ° μ€ν¬λ‘€νλ©΄ κ°μνλ λͺ©λ‘μ μλ‘μ΄ λ·°ν¬νΈ μμΉλ₯Ό λ°μνμ¬ νμλλ νλͺ©μ λμ μΌλ‘ μ λ°μ΄νΈν©λλ€. μ΄λ λΈλΌμ°μ κ° κ΄λ¦¬ν΄μΌ νλ DOM μμμ μλ₯Ό ν¬κ² μ€μ΄λ©΄μ μνν μ€ν¬λ‘€ κ²½νμ μ 곡νλ κ²μ²λΌ 보μ λλ€.
μ μΈκ³ μΆνμ¬μμ λμ¨ μμλ§ κΆμ μ± μ λμ΄νλ μΉ΄νλ‘κ·Έλ₯Ό μμν΄ λ³΄μΈμ. κ°μ μ€ν¬λ‘€μ΄ μλ€λ©΄ λΈλΌμ°μ λ μ 체 μΉ΄νλ‘κ·Έλ₯Ό ν λ²μ λ λλ§νλ €κ³ μλνμ¬ μ¬κ°ν μ±λ₯ λ¬Έμ λ₯Ό μΌμΌν¬ κ²μ λλ€. κ°μ μ€ν¬λ‘€μ μ¬μ©νλ©΄ μ¬μ©μμ νλ©΄μ νμ¬ λ³΄μ΄λ μ± λ§ λ λλ§λμ΄ μ΄κΈ° λ‘λ© μκ°μ νκΈ°μ μΌλ‘ μ€μ΄κ³ λ°μμ±μ ν₯μμν΅λλ€.
κ°μ μ€ν¬λ‘€μ μ΄μ
- μ±λ₯ ν₯μ: 보μ΄λ νλͺ©λ§ λ λλ§ν¨μΌλ‘μ¨ κ°μ μ€ν¬λ‘€μ DOM μ‘°μμ μμ ν¬κ² μ€μ¬ λ‘λ© μκ°μ λ¨μΆνκ³ μ€ν¬λ‘€μ λ λΆλλ½κ² λ§λλλ€. μ΄λ μΈν°λ· μλκ° μ νμ μΈ μ§μμμ νΉν μ€μν©λλ€.
- λ©λͺ¨λ¦¬ μλΉ κ°μ: DOM μμκ° μ λ€λ κ²μ λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μ λ€λ κ²μ μλ―Ένλ©°, μ΄λ νΉμ κΈλ‘λ² μ§μμμ λ 보νΈμ μΌ μ μλ ꡬν κΈ°κΈ°λ μ μ¬μ νλμ¨μ΄λ₯Ό κ°μ§ μ¬μ©μμκ² νΉν μ€μν©λλ€.
- μ¬μ©μ κ²½ν ν₯μ: λ λΉ λ₯Έ λ‘λ© μκ°κ³Ό λΆλλ¬μ΄ μ€ν¬λ‘€μ μ¬μ©μμ μμΉλ κΈ°κΈ°μ κ΄κ³μμ΄ λ λ°μμ΄ λΉ λ₯΄κ³ μ¦κ±°μ΄ κ²½νμ μ 곡ν©λλ€.
- μ κ·Όμ± κ°μ : μ¬λ°λ₯΄κ² ꡬνλλ©΄ κ°μ μ€ν¬λ‘€μ μ€ν¬λ¦° 리λμ κ°μ 보쑰 κΈ°μ μ μμ‘΄νλ μ¬μ©μμ μ κ·Όμ±μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. λͺ©λ‘μ μμ λΆλΆλ§ ν λ²μ λ λλ§νλ©΄ μ€ν¬λ¦° 리λκ° μ½ν μΈ λ₯Ό λ ν¨μ¨μ μΌλ‘ μ²λ¦¬νκ³ λ λμ νμ κ²½νμ μ 곡ν μ μμ΅λλ€.
- νμ₯μ±: κ°μ μ€ν¬λ‘€μ μ¬μ©νλ©΄ μ ν리μΌμ΄μ μ΄ μ±λ₯ μ ν μμ΄ λ§€μ° ν° λ°μ΄ν° μΈνΈλ₯Ό μ²λ¦¬ν μ μμΌλ―λ‘ μλ°±λ§ λͺ μ μ¬μ©μμ μμμ΅ κ°μ λ°μ΄ν° ν¬μΈνΈλ‘ νμ₯ν΄μΌ νλ μ ν리μΌμ΄μ μ μ ν©ν©λλ€.
μ κ·Όμ± κ³ λ €μ¬ν
κ°μ μ€ν¬λ‘€μ μλΉν μ±λ₯ μ΄μ μ μ 곡νμ§λ§, μ κ·Όμ±μ μΌλμ λκ³ κ΅¬ννλ κ²μ΄ μ€μν©λλ€. μλͺ» ꡬνλ κ°μ μ€ν¬λ‘€μ 보쑰 κΈ°μ μ¬μ©μμκ² ν° μ₯λ²½μ λ§λ€ μ μμ΅λλ€.
μ£Όμ μ κ·Όμ± κ³ λ €μ¬ν:
- ν€λ³΄λ νμ: μ¬μ©μκ° ν€λ³΄λλ₯Ό μ¬μ©νμ¬ λͺ©λ‘μ νμν μ μλλ‘ λ³΄μ₯ν΄μΌ ν©λλ€. μ΄μ κ΄λ¦¬κ° μ€μν©λλ€ β μ¬μ©μκ° μ€ν¬λ‘€ν λ μ΄μ μ 보μ΄λ νλͺ© λ΄μ μ μ§λμ΄μΌ ν©λλ€.
- μ€ν¬λ¦° 리λ νΈνμ±: κ°μνλ λͺ©λ‘μ ꡬ쑰μ μνλ₯Ό μ€ν¬λ¦° 리λμ μ λ¬νκΈ° μν΄ μ μ ν ARIA(Accessible Rich Internet Applications) μμ±μ μ 곡ν΄μΌ ν©λλ€.
aria-liveλ₯Ό μ¬μ©νμ¬ λ³΄μ΄λ μ½ν μΈ μ λ³κ²½ μ¬νμ μ립λλ€. - μ΄μ κ΄λ¦¬: μ΄μ μ΄ νμ νμ¬ λ λλ§λ νλͺ© λ΄μ μλλ‘ κ°λ ₯ν μ΄μ κ΄λ¦¬λ₯Ό ꡬνν΄μΌ ν©λλ€. μ¬μ©μκ° μ€ν¬λ‘€νλ©΄ μ΄μ λ κ·Έμ λ°λΌ μ΄λν΄μΌ ν©λλ€.
- μΌκ΄λ λ λλ§: μ¬μ©μκ° μ€ν¬λ‘€ν λ λͺ©λ‘μ μκ°μ λͺ¨μμ΄ μΌκ΄λκ² μ μ§λλλ‘ ν΄μΌ ν©λλ€. μ¬μ©μ κ²½νμ λ°©ν΄ν μ μλ κ°μμ€λ¬μ΄ μ΄λμ΄λ κ²°ν¨μ νΌν΄μΌ ν©λλ€.
- μλ§¨ν± κ΅¬μ‘°: μλ§¨ν± HTML μμ(μ:
<ul>,<li>,<table>,<tr>,<td>)λ₯Ό μ¬μ©νμ¬ λͺ©λ‘μ λͺ ννκ³ μλ―Έ μλ ꡬ쑰λ₯Ό μ 곡ν΄μΌ ν©λλ€. μ΄λ μ€ν¬λ¦° 리λκ° μ½ν μΈ λ₯Ό μ¬λ°λ₯΄κ² ν΄μνλ λ° λμμ΄ λ©λλ€. - ARIA μμ±: ARIA μμ±μ νμ©νμ¬ κ°μνλ λͺ©λ‘μ μ κ·Όμ±μ ν₯μμν€μΈμ. λ€μ μμ±λ€μ κ³ λ €νμΈμ:
aria-label: λͺ©λ‘μ λν μ€λͺ μ μΈ λ μ΄λΈμ μ 곡ν©λλ€.aria-describedby: λͺ©λ‘μ μ€λͺ μ μΈ μμμ μ°κ²°ν©λλ€.aria-live="polite": λͺ©λ‘ μ½ν μΈ μ λ³κ²½ μ¬νμ λ°©ν΄λμ§ μλ λ°©μμΌλ‘ μ립λλ€.aria-atomic="true": λ³κ²½ μ μ 체 λͺ©λ‘ μ½ν μΈ κ° μλ €μ§λλ‘ λ³΄μ₯ν©λλ€.aria-relevant="additions text": μλ €μΌ ν λ³κ²½ μ ν(μ: μ νλͺ© μΆκ°, ν μ€νΈ μ½ν μΈ λ³κ²½)μ μ§μ ν©λλ€.
- 보쑰 κΈ°μ ν μ€νΈ: λ€μν μ€ν¬λ¦° 리λ(μ: NVDA, JAWS, VoiceOver) λ° κΈ°ν 보쑰 κΈ°μ λ‘ κ°μνλ λͺ©λ‘μ μ² μ ν ν μ€νΈνμ¬ μμ ν μ κ·Ό κ°λ₯νμ§ νμΈν΄μΌ ν©λλ€.
- κ΅μ ν(i18n) λ° νμ§ν(l10n): κ΅μ μ μΈ μ¬μ©μλ₯Ό λμμΌλ‘ ν λ, κ°μ μ€ν¬λ‘€ ꡬνμ΄ λ€μν ν μ€νΈ λ°©ν₯(μ: μΌμͺ½μμ μ€λ₯Έμͺ½, μ€λ₯Έμͺ½μμ μΌμͺ½)κ³Ό λ μ§/μ«μ νμμ κ³ λ €νλλ‘ ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, κ±°λ λ΄μμ νμνλ κΈμ΅ μ ν리μΌμ΄μ μ μ¬μ©μμ λ‘μΌμΌμ λ°λΌ ν΅ν κΈ°νΈμ λ μ§ νμμ μ¬λ°λ₯΄κ² νμν΄μΌ ν©λλ€.
μμ: ν€λ³΄λ νμ κ°μ
μ μμκ±°λ μ¬μ΄νΈμ κ°μνλ μ ν λͺ©λ‘μ μκ°ν΄ 보μΈμ. ν€λ³΄λλ‘ νμνλ μ¬μ©μλ 보μ΄λ λ·°ν¬νΈ λ΄μ μ νλ€ μ¬μ΄μμ μ½κ² μ΄μ μ μ΄λν μ μμ΄μΌ ν©λλ€. μ¬μ©μκ° ν€λ³΄λ(μ: νμ΄ν ν€ μ¬μ©)λ‘ λͺ©λ‘μ μ€ν¬λ‘€ν λ, μ΄μ μ 보μ΄κ² λλ λ€μ μ νμΌλ‘ μλμΌλ‘ μ΄λν΄μΌ ν©λλ€. μ΄λ μ΄μ μ κ΄λ¦¬νκ³ κ·Έμ λ°λΌ λ·°ν¬νΈλ₯Ό μ λ°μ΄νΈνλ μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ¬ λ¬μ±ν μ μμ΅λλ€.
ꡬν κΈ°λ²
κ°μ μ€ν¬λ‘€μ ꡬννλ λ°λ μ¬λ¬ κΈ°λ²μ μ¬μ©ν μ μμ΅λλ€. κΈ°λ²μ μ νμ μ ν리μΌμ΄μ μ νΉμ μꡬμ¬νκ³Ό μ¬μ© μ€μΈ νλ μμν¬μ λ°λΌ λ¬λΌμ§λλ€.
1. DOM μ‘°μ
μ΄ μ κ·Ό λ°©μμ μ¬μ©μκ° μ€ν¬λ‘€ν λ μμλ₯Ό μΆκ°νκ³ μ κ±°νκΈ° μν΄ DOMμ μ§μ μ‘°μνλ κ²μ ν¬ν¨ν©λλ€. λ λλ§ νλ‘μΈμ€μ λν λμ μμ€μ μ μ΄λ₯Ό μ 곡νμ§λ§, ꡬννκ³ μ μ§ κ΄λ¦¬νκΈ°κ° λ 볡μ‘ν μ μμ΅λλ€.
μμ (κ°λ μ ):
function updateViewport(scrollTop) {
const startIndex = Math.floor(scrollTop / itemHeight);
const endIndex = startIndex + visibleItemCount;
// λ μ΄μ 보μ΄μ§ μλ νλͺ© μ κ±°
// 보μ΄κ² λ νλͺ© μΆκ°
// 보μ΄λ νλͺ©μ μ½ν
μΈ μ
λ°μ΄νΈ
}
2. CSS λ³ν
μ΄ μ κ·Ό λ°©μμ CSS λ³ν(μ: translateY)μ μ¬μ©νμ¬ μ»¨ν
μ΄λ μμ λ΄μ 보μ΄λ νλͺ©μ λ°°μΉν©λλ€. μ΄λ DOM μ‘°μλ³΄λ€ λ ν¨μ¨μ μΌ μ μμ§λ§ λ³ν κ°μ μΈμ¬ν κ΄λ¦¬κ° νμν©λλ€.
μμ (κ°λ μ ):
function updateViewport(scrollTop) {
const translateY = -scrollTop;
container.style.transform = `translateY(${translateY}px)`;
}
3. νλ μμν¬λ³ μ루μ
λ§μ μΈκΈ° μλ νλ‘ νΈμλ νλ μμν¬λ κ°μ μ€ν¬λ‘€μ ꡬνμ λ¨μννλ λ΄μ₯ μ»΄ν¬λνΈλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ 곡ν©λλ€. μ΄λ¬ν μ루μ μ μ’ μ’ μ΅μ νλ λ λλ§ λ° μ κ·Όμ± κΈ°λ₯μ κΈ°λ³Έμ μΌλ‘ μ 곡ν©λλ€.
- React:
react-window,react-virtualized - Angular:
@angular/cdk/scrolling - Vue.js:
vue-virtual-scroller
μ΄λ¬ν λΌμ΄λΈλ¬λ¦¬λ κ°μ μ€ν¬λ‘€μ 볡μ‘μ±μ μ²λ¦¬νλ μ»΄ν¬λνΈλ₯Ό μ 곡νμ¬ κ°λ°μκ° μ ν리μΌμ΄μ λ‘μ§μ μ§μ€ν μ μλλ‘ ν©λλ€. μΌλ°μ μΌλ‘ λ€μκ³Ό κ°μ κΈ°λ₯μ μ 곡ν©λλ€:
- λμ νλͺ© λμ΄ κ³μ°
- ν€λ³΄λ νμ μ§μ
- μ κ·Όμ± ν₯μ κΈ°λ₯
- μ¬μ©μ μ μ κ°λ₯ν λ λλ§ μ΅μ
μ½λ μμ (React)
Reactμμ react-window λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ κ°μ μ€ν¬λ‘€μ ꡬννλ λ°©λ²μ μ€λͺ
νκ² μ΅λλ€.
μμ 1: κΈ°λ³Έ κ°μν λͺ©λ‘
import React from 'react';
import { FixedSizeList as List } from 'react-window';
const Row = ({ index, style }) => (
Row {index}
);
const MyList = () => (
{Row}
);
export default MyList;
μ΄ μμ λ 1000κ°μ νλͺ©μ κ°μ§ κΈ°λ³Έ κ°μν λͺ©λ‘μ λ§λλλ€. FixedSizeList μ»΄ν¬λνΈλ 보μ΄λ νλͺ©λ§ λ λλ§νμ¬ μνν μ€ν¬λ‘€ κ²½νμ μ 곡ν©λλ€.
μμ 2: μ¬μ©μ μ§μ νλͺ© λ λλ§
import React from 'react';
import { FixedSizeList as List } from 'react-window';
const Row = ({ index, style, data }) => {
const item = data[index];
return (
{item.name} - {item.description}
);
};
const MyList = ({ items }) => (
{Row}
);
export default MyList;
μ΄ μμ λ λ°μ΄ν°λ‘ μ¬μ©μ μ§μ νλͺ©μ λ λλ§νλ λ°©λ²μ 보μ¬μ€λλ€. itemData propμ λ°μ΄ν°λ₯Ό Row μ»΄ν¬λνΈλ‘ μ λ¬νλ λ° μ¬μ©λ©λλ€.
κ΅μ ν λ° νμ§ν κ³ λ €μ¬ν
κΈλ‘λ² μ ν리μΌμ΄μ μ μν΄ κ°μ μ€ν¬λ‘€μ ꡬνν λ, μ ν리μΌμ΄μ μ΄ λ€λ₯Έ μΈμ΄μ μ§μμμ μ¬λ°λ₯΄κ² μλνλλ‘ κ΅μ ν(i18n)μ νμ§ν(l10n)λ₯Ό κ³ λ €νλ κ²μ΄ μ€μν©λλ€.
- ν
μ€νΈ λ°©ν₯: μΌλΆ μΈμ΄λ μ€λ₯Έμͺ½μμ μΌμͺ½μΌλ‘(RTL) μμ±λ©λλ€. κ°μ μ€ν¬λ‘€ ꡬνμ΄ RTL ν
μ€νΈ λ°©ν₯μ μ¬λ°λ₯΄κ² μ²λ¦¬νλμ§ νμΈν΄μΌ ν©λλ€. CSS λ
Όλ¦¬μ μμ±(μ:
margin-inline-start,margin-inline-end)μ΄ μ΄μ κ΄λ ¨νμ¬ λμμ΄ λ μ μμ΅λλ€. - λ μ§ λ° μ«μ νμ: μ¬μ©μμ λ‘μΌμΌμ λ§λ μ¬λ°λ₯Έ νμμΌλ‘ λ μ§μ μ«μλ₯Ό νμν΄μΌ ν©λλ€. λ μ§, μ«μ, ν΅νλ₯Ό νμννκΈ° μν΄ κ΅μ ν λΌμ΄λΈλ¬λ¦¬(μ: JavaScriptμ
IntlAPI)λ₯Ό μ¬μ©νμΈμ. μλ₯Ό λ€μ΄, μΌλΆ μ λ½ κ΅κ°μμλ λ μ§κ° DD/MM/YYYYλ‘ νμνλμ§λ§, λ―Έκ΅μμλ MM/DD/YYYYλ‘ νμνλ©λλ€. - ν΅ν κΈ°νΈ: μ¬μ©μμ λ‘μΌμΌμ λ§κ² ν΅ν κΈ°νΈλ₯Ό μ¬λ°λ₯΄κ² νμν΄μΌ ν©λλ€. $100.00 USDμ κ°κ²©μ μ¬μ©μμ μμΉμ μ νΈνλ ν΅νμ λ°λΌ λ€λ₯΄κ² νμλμ΄μΌ ν©λλ€.
- κΈκΌ΄ μ§μ: κ°μνλ λͺ©λ‘μ μ¬μ©λ κΈκΌ΄μ΄ λ€λ₯Έ μΈμ΄μμ μ¬μ©λλ λ¬Έμλ₯Ό μ§μνλμ§ νμΈν΄μΌ ν©λλ€. μΉ κΈκΌ΄μ μ¬μ©νμ¬ λͺ¨λ μ¬μ©μμκ² μ¬λ°λ₯Έ κΈκΌ΄μ΄ μ 곡λλλ‘ νμΈμ.
- λ²μ: κ°μνλ λͺ©λ‘μ λͺ¨λ ν μ€νΈ μ½ν μΈ λ₯Ό μ¬μ©μμ μΈμ΄λ‘ λ²μν΄μΌ ν©λλ€. λ²μ λΌμ΄λΈλ¬λ¦¬λ μλΉμ€λ₯Ό μ¬μ©νμ¬ λ²μμ κ΄λ¦¬νμΈμ.
- μΈλ‘ μ°κΈ° λͺ¨λ: μΌλΆ λμμμ μΈμ΄(μ: μΌλ³Έμ΄, μ€κ΅μ΄)λ μΈλ‘λ‘ μΈ μ μμ΅λλ€. μ ν리μΌμ΄μ μ΄ μ΄λ¬ν μΈμ΄λ‘ μ½ν μΈ λ₯Ό νμν΄μΌ νλ κ²½μ° μΈλ‘ μ°κΈ° λͺ¨λλ₯Ό μ§μνλ κ²μ κ³ λ €νμΈμ.
ν μ€νΈ λ° μ΅μ ν
κ°μ μ€ν¬λ‘€μ ꡬνν νμλ, μ΅μμ μ±λ₯κ³Ό μ κ·Όμ±μ μ 곡νλμ§ νμΈνκΈ° μν΄ κ΅¬νμ ν μ€νΈνκ³ μ΅μ ννλ κ²μ΄ μ€μν©λλ€.
- μ±λ₯ ν μ€νΈ: λΈλΌμ°μ κ°λ°μ λꡬλ₯Ό μ¬μ©νμ¬ κ°μνλ λͺ©λ‘μ μ±λ₯μ νλ‘νμΌλ§νμΈμ. μ±λ₯ λ³λͺ© νμμ μλ³νκ³ κ·Έμ λ°λΌ μ½λλ₯Ό μ΅μ ννμΈμ. λ λλ§ μκ°, λ©λͺ¨λ¦¬ μ¬μ©λ, CPU μ¬μ©λμ μ£Όμλ₯Ό κΈ°μΈμ΄μΈμ.
- μ κ·Όμ± ν μ€νΈ: λ€μν μ€ν¬λ¦° 리λ λ° κΈ°ν 보쑰 κΈ°μ λ‘ κ°μνλ λͺ©λ‘μ ν μ€νΈνμ¬ μμ ν μ κ·Ό κ°λ₯νμ§ νμΈνμΈμ. μ κ·Όμ± ν μ€νΈ λꡬλ₯Ό μ¬μ©νμ¬ μ κ·Όμ± λ¬Έμ λ₯Ό μλ³νμΈμ.
- κ΅μ°¨ λΈλΌμ°μ ν μ€νΈ: λͺ¨λ νκ²½μμ μ¬λ°λ₯΄κ² μλνλμ§ νμΈνκΈ° μν΄ λ€μν λΈλΌμ°μ μ μ΄μ 체μ μμ κ°μνλ λͺ©λ‘μ ν μ€νΈνμΈμ.
- κΈ°κΈ° ν μ€νΈ: λͺ¨λ κΈ°κΈ°μμ μ’μ μ¬μ©μ κ²½νμ μ 곡νλμ§ νμΈνκΈ° μν΄ λ€μν κΈ°κΈ°(μ: λ°μ€ν¬ν± μ»΄ν¨ν°, λ ΈνΈλΆ, νλΈλ¦Ώ, μ€λ§νΈν°)μμ κ°μνλ λͺ©λ‘μ ν μ€νΈνμΈμ. μ μ¬μ κΈ°κΈ°μμμ μ±λ₯μ μ£Όμλ₯Ό κΈ°μΈμ΄μΈμ.
- μ§μ° λ‘λ©(Lazy Loading): κ°μνλ λͺ©λ‘μ μ΄λ―Έμ§ λ° κΈ°ν μμ°μ λ³΄μΌ λλ§ λ‘λνλ μ§μ° λ‘λ© μ¬μ©μ κ³ λ €νμΈμ. μ΄λ μ±λ₯μ λμ± ν₯μμν¬ μ μμ΅λλ€.
- μ½λ λΆν (Code Splitting): μ½λ λΆν μ μ¬μ©νμ¬ μ ν리μΌμ΄μ μ½λλ₯Ό νμμ λ°λΌ λ‘λν μ μλ μμ μ²ν¬λ‘ λλμΈμ. μ΄λ μ ν리μΌμ΄μ μ μ΄κΈ° λ‘λ μκ°μ μ€μΌ μ μμ΅λλ€.
- μΊμ±(Caching): κ°μνλ λͺ©λ‘μμ μμ£Ό μ‘μΈμ€νλ λ°μ΄ν°λ₯Ό μΊμνμ¬ λ€νΈμν¬ μμ² μλ₯Ό μ€μ΄μΈμ.
κ²°λ‘
κ°μ μ€ν¬λ‘€μ μΉ μ ν리μΌμ΄μ μμ λκ·λͺ¨ λͺ©λ‘μ λ λλ§μ μ΅μ ννκΈ° μν κ°λ ₯ν κΈ°μ μ λλ€. 보μ΄λ νλͺ©λ§ λ λλ§ν¨μΌλ‘μ¨ μ±λ₯μ ν¬κ² ν₯μμν€κ³ , λ©λͺ¨λ¦¬ μλΉλ₯Ό μ€μ΄λ©°, μ¬μ©μ κ²½νμ ν₯μμν¬ μ μμ΅λλ€. μ¬λ°λ₯΄κ² ꡬνλλ©΄ κ°μ μ€ν¬λ‘€μ 보쑰 κΈ°μ μ¬μ©μμ μ κ·Όμ±λ ν₯μμν¬ μ μμ΅λλ€.
μ΄ κΈμμ λ Όμλ μ£Όμ μ κ·Όμ± κ³ λ €μ¬νκ³Ό ꡬν κΈ°λ²μ κ³ λ €ν¨μΌλ‘μ¨, κ°λ°μλ€μ μ±λ₯μ΄ λ°μ΄λκ³ μ κ·Όμ±μ΄ μ’μ κ°μνλ λͺ©λ‘μ λ§λ€ μ μμΌλ©°, μμΉ, κΈ°κΈ°, λ₯λ ₯μ κ΄κ³μμ΄ λͺ¨λ μ¬μ©μμκ² μννκ³ ν¬μ©μ μΈ κ²½νμ μ 곡ν μ μμ΅λλ€. μ΄λ¬ν κΈ°μ μ μμ©νλ κ²μ μ μΈκ³ μ¬μ©μμ λ€μν μꡬλ₯Ό μΆ©μ‘±μν€λ νλμ μ΄κ³ μΈκ³μ μΌλ‘ μ κ·Ό κ°λ₯ν μΉ μ ν리μΌμ΄μ μ ꡬμΆνλ λ° λ§€μ° μ€μν©λλ€.